package com.zhenhe.core.common.enums.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Service;

import com.zhenhe.core.common.enums.DropDownDto;
import com.zhenhe.core.common.enums.EnumSupport;
import com.zhenhe.core.common.enums.IEnum;
import com.zhenhe.core.common.enums.IEnumList;
import com.zhenhe.core.common.global.Global;
import com.zhenhe.core.common.utils.StringUtils;

@Service
public class EnumList implements IEnumList{
	

	/**
	 * 权限
	 */
	public enum RoleType implements IEnum{
		ADMINISTRATOR("系统管理",4),
		
		OPERATIONMANAGER("运营主管（复核）",2),
		
		OPERATION("运营操作（审核）",3),
		
		BRANCH("开单中心（申请）",Global.getBranchRoleId()),
		
		POSSTRATOR("POS管理",6),
		
		FINANCE("财务",5);
	
		
		
		/** 值 */
		private String label;
	
		/** 键 */
		private Integer code;
		
		private RoleType(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		
		public static String getEnumLabel(Integer code) {
			for (RoleType c : RoleType.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}
	
		/**
		 * 根据值取得第一个匹配的键
		 * 
		 * @param label
		 *            String
		 * @return String
		 */
		public static Integer getEnumCode(String label) {
			for (RoleType c : RoleType.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}
	
		/**
		 * 取得下拉框列表
		 * 
		 * @return List
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (RoleType c : RoleType.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}
	
		/**
		 * get
		 * 
		 * @return String
		 */
		public String getLabel() {
			return label;
		}
	
		/**
		 * set
		 * 
		 * @return String
		 */
		public Integer getCode() {
			return code;
		}
	
		/**
		 * String转换，中间加横杠
		 * 
		 * @return String
		 */
		@Override
		public String toString() {
			return this.label;
		}
	
		/**
		 * 转换成value
		 * 
		 * @return String
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}
	
		/**
		 * 转换成label
		 * 
		 * @return String
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}
	
		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
		
	}

	/**
	 * 性别
	 */
	public enum Gender implements IEnum{
		//男
		MALE("男",1),
		//女
		FEMALE("女",2);
		
		/** 值 */
		private String label;
		/** 键 */
		private Integer code;
		private Gender(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		public static String getEnumLabel(Integer code) {
			for (Gender c : Gender.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}
		/**
		 * 根据值取得第一个匹配的键
		 */
		public static Integer getEnumCode(String label) {
			for (Gender c : Gender.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}
		/**
		 * 取得下拉框列表
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (Gender c : Gender.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}
		/**
		 * get
		 */
		public String getLabel() {
			return label;
		}
		/**
		 * set
		 */
		public Integer getCode() {
			return code;
		}
		/**
		 * String转换，中间加横杠
		 */
		@Override
		public String toString() {
			return this.label;
		}
		/**
		 * 转换成value
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}
		/**
		 * 转换成label
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}
		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
	}
	
	/**
	 * 资料批量录入-表格类型：
	 * -雏鹰企业-瞪羚企业-高企清单-基础设施项目清单-科技创新政策落实汇总-人才清单
	 */
	public enum ExcelCompanyType implements IEnum{
		/** "雏鹰企业",0  */
		CY("雏鹰企业",0),
		/** "瞪羚企业",1  */
		DL("瞪羚企业",1),
		/** "高企清单",2  */
		GQ("高企清单",2),
		/** "基础设施项目清单",3  */
		JC("基础设施项目清单",3),
		/** "科技创新政策落实汇总",4  */
		KJ("科技创新政策落实汇总",4),
		/** "人才清单",5 */
		RC("人才清单",5);
		
		/** 值 */
		private String label;
		/** 键 */
		private Integer code;
		private ExcelCompanyType(String label, Integer code){
			this.label = label;
			this.code = code;
		}
		public static String getEnumLabel(Integer code) {
			for (ExcelCompanyType c : ExcelCompanyType.values()) {
				if (code == c.getCode()) {
					return c.label;
				}
			}
			return null;
		}
		/**
		 * 根据值取得第一个匹配的键
		 */
		public static Integer getEnumCode(String label) {
			for (ExcelCompanyType c : ExcelCompanyType.values()) {
				if (StringUtils.equals(c.getLabel(), label)) {
					return c.code;
				}
			}
			return null;
		}
		/**
		 * 取得下拉框列表
		 */
		public static List<DropDownDto> getList() {
			List<DropDownDto> resultList = new ArrayList<DropDownDto>();
			for (ExcelCompanyType c : ExcelCompanyType.values()) {
				DropDownDto dto = new DropDownDto();
				dto.setId(c.getCode());
				dto.setName(c.getLabel());
				resultList.add(dto);
			}
			return resultList;
		}
		/**
		 * get
		 */
		public String getLabel() {
			return label;
		}
		/**
		 * set
		 */
		public Integer getCode() {
			return code;
		}
		/**
		 * String转换，中间加横杠
		 */
		@Override
		public String toString() {
			return this.label;
		}
		/**
		 * 转换成value
		 */
		public String toValueString() {
			return String.valueOf(this.code);
		}
		/**
		 * 转换成label
		 */
		public String toLabelString() {
			return String.valueOf(this.label);
		}
		@Override
		public String getEnumName() {
			return this.getClass().getName();
		}
	}
	
	@Override
	public String getEnumLabel(String enumType, Integer enumKey) {
		return EnumSupport.getEnumLabel(enumType, enumKey, getClass());
	}

	@Override
	public Integer getEnumCode(String enumType, String enumLabel) {
		return EnumSupport.getEnumCode(enumType, enumLabel, getClass());
	}

	@Override
	public List<DropDownDto> getDropDownList(String enumType) {
		return EnumSupport.getCommonDropDownList(enumType, getClass());
	}

	@Override
	public String getSelList(String enumType, String name,Integer enumValue) {
		return EnumSupport.getSelList(enumType, name, enumValue, getClass());
	}
	
	
	
}
